/**
 * @author harae Feng 
 * @date 2019-09-12 13:41:23 
 * @Last Modified by: harae Feng
 * @Last Modified time: 2019-09-12 13:41:44
 * @Describe JS 计算算法
 */
// js 算法
const jsAlgo = {
    // js 除法
    floatDiv: function (arg1,arg2){
        if(Number(arg2) === 0){return NaN}
        let t1=0,t2=0,r1,r2;
        try{t1=(arg1 || 0).toString().split(".")[1].length}catch(e){}
        try{t2=(arg2 || 0).toString().split(".")[1].length}catch(e){}
        r1=Number((arg1 || 0).toString().replace(".",""));
        r2=Number((arg2 || 0).toString().replace(".",""));
        return (r1/r2)*Math.pow(10,t2-t1);
    },
    // js 乘法
    floatMul: function (arg1,arg2){
        let m=0,s1=arg1.toString(),s2=arg2.toString();
        try{m+=s1.split(".")[1].length}catch(e){}
        try{m+=s2.split(".")[1].length}catch(e){}
        return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
    },
    // js 加法
    floatAdd: function (arg1,arg2){
        let r1,r2,m;
        try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
        try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
        m=Math.pow(10,Math.max(r1,r2))
        return (arg1*m+arg2*m)/m
    },
    // js 减法
    floatSub: function (arg1,arg2){
        let r1,r2,m,n;
        try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
        try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
        m=Math.pow(10,Math.max(r1,r2));
        n=(r1>=r2)?r1:r2;        //动态控制精度长度
        return ((arg1*m-arg2*m)/m).toFixed(n);
    },
    // js 计算率
    calcRate: function (a, b, e='%',undefindshow=0) {
        return b ? (jsAlgo.floatDiv(a || 0, b)* 100 ).toFixed(2) + e : undefindshow
    }
}

module.exports = jsAlgo